K8s 实战(3) - 使用 Minikube 体验 KubeCtl 命令

KubeCtl 入门教程

Minikube vs Kubeadm

Kubeadm 一般用作线上环境. Minikube 是单点 Kube 学习环境, 一般在本机或者虚拟机中部署.

使用 minikube 和 kubectl

1
2
3
4
5
minikube start|stop|delete
minikube version

kubectl version
kubectl cluster-info

查询集群信息

RESTYPE nodes/pods(po)/deployments(deploy)/services(svc)/ReplicaSet(rs)/DaemonSet(ds)
PODNAME 通过 get pods 查看

  • kubectl get RESTYPE 资源列表
  • kubectl describe RESTYPE 显示资源详细信息
  • kubectl logs PODNAME 查看 pod 日志
  • kubectl exec -it PODNAME 命令 在 pod 中运行命令
  • kubectl delete RESTYPE [NAME|-l LABEL] 删除资源

操作 Deployment

kubectl create deployment deploy-name –image=..

使用 Proxy - 集群与外部网络的映射

kubectl proxy
curl http://localhost:8001/version

操作 Service

  • ClusterIP(默认): 对集群内部有效
  • NodePort: 使用 NAT 在集群中每个选定 Node 的相同端口上公开 Service. 使用 NodeIP:Port 的方式访问.
  • LoadBalancer: 创建外部负载均衡器, 指向 Service 的 IP 地址
  • ExternalName:

暴露 Service

kubectl expose deployment/kubernetes-bootcamp –type=”NodePort” –port 8080

1
2
3
4
5
6
7
8
9
minikube ip
IP 172.17.0.36

svc
IP: 10.104.4.185
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31617/TCP
Endpoints: 172.18.0.2:8080,172.18.0.7:8080,172.18.0.8:8080 + 1 more...
  • MasterIP:svc.NodePort
  • ServiceIP:svc.Port => svc.TargetPort
  • Endpoints(ip:port)

操作 Label 标签

kubectl get pods/services/deployments -l k=v
kubectl label pod/svc/deploy PODNAME k=v

Scale 服务扩缩容

kubectl scale deployments/kubernetes-bootcamp --replicas=4

Rollout 动态升级回滚

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

执行设置镜像的时候, 会更新镜像到指定版本, 同时将当前使用镜像作为 rollout 的上一个版本. 查看当前版本状态, 历史记录(详情)

kubectl rollout status deployments/kubernetes-bootcamp

kubectl rollout history deployments/kubernetes-bootcamp [--revision=4]

回滚到上一个版本

kubectl rollout undo deployments/kubernetes-bootcamp [–to-revision=5]

Delete 清理环境

kubectl delete service/deployment NAME

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.